#pragma once
#include "IDirMonitor.h"

#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/filesystem.hpp>
#include <boost/filesystem/operations.hpp>
#include <boost/thread/mutex.hpp>

#include "CScanThread.h"
#include "CDirMonitorData.h"

class CDirMonitor : public IDirMonitor
{
protected:
  CDirMonitorData m_data;
  HANDLE CreateStopEvent();
public:
  
  CDirMonitor();
  virtual ~CDirMonitor(void);

  virtual CDirMonitorData &GetMonitorData() {return m_data;}

  virtual void AddDir(const std::string &Dir, bool RecursiveScan);
  virtual void AddMask(const std::string &Mask);

  virtual void RunScanThread(CScanThread &threadObject, IDirChangedFeedback &feedback);
};
